Product testing requires a large number of tests to be run, and each test result must be stored. For example, one software product in development can require a set of 16,500 tests to be regularly run to ensure proper operation. These tests can take 15 hours to run using one test machine. If a developer makes a code change there is the distinct possibility that one or more of the 16,500 tests will regress. Experience has shown that if the developers do not run the tests over their changed code on one day, they are highly likely to have a significant number of regressions to deal with the next day, and product development and release schedules will suffer.
Of course, each test is time consuming, and detracts from the progress of the product development as a whole. Further, when a data processing system is performing these tests, it is largely unusable for any other task, making it impractical to use many systems for this testing.
On the other hand, when a data processing system is not being actively used by a user, e.g., if the user was out for lunch, in a meeting or on vacation, the CPU time that could have been put to work to reduce the time required to run the test set was wasted by the machine being idle.
There is, therefore, a need in the art for a system, process and computer program product for performing efficient code testing while utilizing available data processing system processing power.